package main

import (
	"errors"
	"fmt"
)

// 1.过多的判断会严重影响程序的可读性。使用异常处理可以使得程序更加清晰和可维护
// 2.不可控的因素，逻辑判断总归会有疏漏，但是使用异常处理可以提供默认的处理方式
// 3.异常可以在调用栈自动向上传播
func main() {

	fmt.Println("main invoke")
	handle()
	fmt.Println("main end")

	//最终返回 Process finished with the exit code 2，代表非正常退出
	//正常退出是0
}

func handle() {
	//errors.New()未errors包的New函数，会返回errorString结构体对象的地址,
	//结构体的Error方法为返回结构体成员的文本信息
	panic(errors.New("handle函数出错了"))
}
